package model;

import java.sql.SQLException;

import database.Clause;
import database.IDbConnector;
import database.MySQLConnector;
import database.ValuedAttribute;

/**
 * @author Aubry Pirian
 *
 */
public abstract class DbTable {
	
	protected IDbConnector idbc;	// Connecteur à la base de données
	
	protected String tableName;	// nom de la table
	
	public DbTable (String tableName) throws ClassNotFoundException,SQLException,NoSuchFieldException {
		try {
			this.idbc = new MySQLConnector(Params.DB_SERVER,Params.DB_USER,Params.DB_PASSWD,Params.DB_NAME);
		} catch (NoSuchFieldException e) {
			throw e;
		}
		this.tableName = tableName;
		try {
			this.idbc.connect();
		} catch (SQLException e) {
			throw new SQLException("Echec de la connexion à la base de données");
//			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			throw new ClassNotFoundException("Echec de la connexion à la base de données");
//			e.printStackTrace();
		}
	}
	
	/**
	 * Méthode retournant la clause identifiant le theme dans la table,
	 * 	en fonction d'une chaine
	 * @return Clause where
	 * @throws NoSuchFieldException : paramètre non valide
	 */
	protected Clause getWhere(String key, String value) throws NoSuchFieldException{
		try {
			return new Clause( new ValuedAttribute(key,value) );
		} catch (NoSuchFieldException e) {
			throw e;
		}
	}
	
	/**
	 * Méthode retournant la clause identifiant le theme dans la table,
	 * 	en fonction d'un entier
	 * @return Clause where
	 * @throws NoSuchFieldException : paramètre non valide
	 */
	protected Clause getWhere(String key, int value) throws NoSuchFieldException {
		try {
			return this.getWhere(key, ""+value);
		} catch (NoSuchFieldException e) {
			throw e;
		}
	}

}
